1. Field of the Invention
This patent application relates to computer systems, and more particularly relates to management software for controlling one or more peripherals connected to multiple servers.
2. Description of Prior Art
Software may be placed in context by reference to FIG. 1A which depicts a software xe2x80x9cfieldxe2x80x9d and is presented as an aid to understanding the context of the present invention. FIG. 1A shows three basic divisions of software: (1) Firmware or BIOS (Basic Input/Output System); (2) Operating System software; and (3) Applications software. The relationship of these various software categories to each other are generally suggested by their respective juxtapositions in the diagram. The firmware (BIOS) software is needed to get the computer system xe2x80x9cbooted-upxe2x80x9d or turned on. The operating system runs on top of the BIOS and is needed to bring the computer system to life, to enable it to run or operatexe2x80x94kind of the lifeblood of the system. The application software runs on the operating system software, and directs the computer in a particular task of interest. A detailed discussion of each of the entries on the field is not undertaken herein, but each entry is somewhat self-explanatory.
This field of software is not complete and many more software entries could have been made, known by various names such as: daemons, processes, threads, API (Application Programmers Interface), sockets, algorithms, data structures, etc. Each of these software names has special meaning in the software arts. These pieces of software, others shown on FIG. 1A, and others not mentioned can interconnect with each other and firmware, and hardware in a concerted effort to manage or control the overall computer system operation in a manner to provide the result desired by the computer system human user. Regardless of the size or complexity of the computer system or computer system network, with multiple layers of software, in every system electrons ultimately flow over conductive paths and through electrical nodes in a manner that the nodes are either at a high voltage (high) or low voltage (low) at any given computer clock cycle (snapshot in time). It is the controlling of each of these nodes, perhaps trillions of them per computer system, on an individual node basis, to be either high or low at any specific point in time, and the controlling of the sequence of how each one of these nodes changes from high to low and vice versa, which is the job of the various software on the computer system working in concert with each other, which produces the desired result for the human computer user. Future computer systems might employ technology other than electrical, as for example optical or molecular technology. In any event, the present invention falls into one of these categories of software, and relates to memory management software, shown in FIG. 1A in the operating system category.
In the typical client-server relationship, the client needs to periodically determine the state or status of the peripheral device connected from the server. This state determination is typically accomplished in the prior-art by use of management software under control of the client. The simplest configuration of a single client, single server and single peripheral (in this case a disk array) is shown in prior-art FIG. 1. In this instance the client connects to the server by way of a local area network (LAN). The server is running the management software commonly known as xe2x80x9cagent softwarexe2x80x9d or as an xe2x80x9cagentxe2x80x9d. This agent software can directly communicate with the peripheral device via the physical cable connecting the server to the peripheral.
The server agent software, when actively managing the peripheral device, can operate in either one of two modes: as a xe2x80x9cpass throughxe2x80x9d or as a xe2x80x9ccachexe2x80x9d. A cache is a high speed memory, and if operating as a xe2x80x9ccachexe2x80x9d then some information is retained. The cache agent maintains an image of the peripheral state that is occasionally refreshed at a certain polling interval. A pass through agent retains no state information about the peripheral device, but simply serves as a conduit between the client""s application software and the peripheral device.
For many applications the caching approach is preferred, typically for managing large-scale peripherals such as disk arrays or tape jukeboxes. Caching permits quick agent response to multiple client inquiries, in the instance of a multiple -client system. Also, caching has the capability to throttle the number of requests sent to a peripheral if there are multiple client applications flooding the management agent software with requests.
As noted, a cached agent can record information, and peripherals often generate one-time events that they pass to connected servers. This event notification, in a cached agent environment, can be stored and queried in a central location which is very convenient. Further advantage in using a cached agent is logging events: each time the agent software receives a new event from the peripheral, it can also log the event in the server""s system logxe2x80x94SYSLOG on UNIX, or NT Event log on Windows NT. This could be critical for system administrator software which may be experiencing problems on a server and which needs to correlate these problems with what may have happened to the peripheral.
The cached agent architecture works well when there is only one server, as in prior-art FIG. 1 client applications, such as a graphical user interface, (GUI), can monitor the cached agent software by issuing xe2x80x9cchange requestsxe2x80x9d, and the agent can respond by sending those objects in the cache that have recently changed, and thus update any pertinent GUI display windows.
However, when there are multiple servers, as in FIG. 2, managing the same peripheral, traditional prior-art agent caching architectures begin to experience a variety of problems. For example, in a system with four servers connected to a single disk array peripheral, as in FIG. 2, there are four separate server agents maintaining four separate caches. Client application software managing the disk array would ordinarily communicate with all four agents for the purpose of verifying that the connection between each server and disk array is good, meaning that each server is able to effectively use the disk array through its channel. As the client application queries each agent for state changes to its agent cache, a number of undesirable things can happen. Each agent sends over its changes to the client, but only the first agent to do so sends data that is not redundant, unnecessary, and potentially conflicting (or stale). The second, third, and fourth agents will necessarily send data that is redundant, unnecessary, and potentially conflicting (or stale). Redundant data shall confuse the client application software (or potentially the user of the client application software). And, the redundant data will use up unnecessary network bandwidth for the connection between client and servers. The present invention offers a solution to this aforementioned inherent redundancy problem when a client-server arrangement is configured with multiple servers controlling one or more peripherals. This solution permits client management of a peripheral connected to multiple servers which provides for a coherent, consistent view of the peripheral state, as well as allowing for efficient utilization of network bandwidth during an update of the client application.
Within the context of a client-server computer system configuration, the present invention solves the problem of obtaining and resolving conflicting peripheral device state change information, which would normally be obtained when the peripheral device is connected to multiple servers and where each server is running agent software under control of the client. In such computer system which includes a client, a multiple number of servers each connected to the client, and at least one peripheral device managed by the servers, the present invention includes software for initiating a primary request and secondary requests for state changes occurring in the peripheral device. That software further includes the capability, within each of the servers and responsive to the initiating of the requests, to report peripheral state changes to the client, differentiate the primary request from the secondary requests, report a primary level of information detail to the client responsive to the primary request, and a secondary level of information detail to the client responsive to any one of the secondary requests. The primary level of information detail is complete state change information and the secondary level of information detail does not conflict with said complete state change information. Primary level or complete state change information includes, but is not limited to: state of a connection between a particular server and its peripheral, status of all hardware components in the peripheral, logical configuration of memory, disks, or other hardware components, history of events, and serial number identification information uniquely identifying that peripheral or each peripheral (if more than one is employed in the system), etc. By contrast, secondary level information would be the state of the connection between another server and the peripheral, which does not conflict with the aforementioned complete state change information. Secondary level information is thus less than, and possibly a subset of, the primary level information. These various pieces of information are each embodied as a software xe2x80x9cobjectxe2x80x9d. (A software xe2x80x9cobjectxe2x80x9d can be conceptualized as a xe2x80x9ccontainerxe2x80x9d or xe2x80x9cbucketxe2x80x9d into which is placed related items of data; more realistically the object is a portion of physical or logical memory which forms the xe2x80x9ccontainerxe2x80x9d.)
In a further feature of the present invention, the secondary level of information detail is limited to particular information associated with a particular one of the servers. The particular information is state-of-connection information with regard to the peripheral device. Under circumstances of a failed connection, the state-of-connection information is a connection-failure-object. The present invention further relates to a methodology to be practiced on the foregoing computer system to assess a peripheral device""s state change status stored in cache memories of the multiple servers employed in the system. The methodology steps include (a) requesting state change status; (b) determining the primary or secondary nature of the request; (c) if primary obtaining complete state change status; (d) if secondary obtaining limited state change status that does not conflict with the complete status; and (e) repeating these steps until each server has been polled and has provided its status to the client. In the circumstance where at least one of the servers has a failed connection to the peripheral, the limited state change status for that one server is a connection-failure-object; under these conditions, the present invention further includes the steps of detecting that status and unless the primary request had been generated, generating the primary request as the next request.
It is thus advantageous to employ the present invention in any client-server computer system which employs multiple servers and agent software for determining the operating state of a peripheral-device, such as, for example, a disk drive or a printer.
It is a general object of the present invention to provide an improved client-server computer system.
It is another object of the present invention to provide improved memory management software.
It is yet another object of the present invention to provide a solution to the problem of obtaining and resolving conflicting peripheral device state change information for certain computer system configurations.